home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / eiffel / smalleif.97 / se.t / SmallEiffel / bin_c / compile_to_c15.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-02  |  51.9 KB  |  2,145 lines

  1. /* ANSI C code generated by SmallEiffel. */
  2. /*
  3. -- SmallEiffel  -- Release (- 0.97)    --      FRANCE
  4. -- Copyright (C), 1994 - Dominique COLNET and Suzanne COLLIN 
  5. -- University Henri Poincare' - Nancy 1 - email colnet@loria.fr 
  6. -- CRIN (Centre de Recherche en Informatique de Nancy)
  7. -- FRANCE 
  8. */
  9. #include "compile_to_c.h"
  10. void rT248copy(T248 *C,T0 * a1){
  11. /*IF*//*AF*//*AE*/
  12. memcpy(C,a1,s[C->id]);
  13. /*FI*/}
  14. int rT248is_pre_computable(T248 *C){
  15. int R=0;
  16. R=(XrT68is_result((C)->_left_side))&&(XrT68is_pre_computable((C)->_right_side));
  17. return R;
  18. }
  19. T0 * rT248right_type(T248 *C){
  20. T0 * R=NULL;
  21. R=XrT68result_type((C)->_right_side);
  22. return R;
  23. }
  24. void rT248make(T248 *C,T0 * a1,T0 * a2){
  25. C->_left_side=a1;
  26. C->_right_side=a2;
  27. }
  28. T0* rT97to_key(T97 *C){
  29. T0* R=NULL;
  30. R=(C)->_to_string;
  31. return R;
  32. }
  33. void rT97copy(T97 *C,T0 * a1){
  34. /*IF*//*AF*//*AE*/
  35. memcpy(C,a1,s[C->id]);
  36. /*FI*/}
  37. void rT97make(T97 *C,T0* a1,T0 * a2){
  38. C->_to_string=a1;
  39. C->_start_position=a2;
  40. }
  41. int rT80is_static(T80 *C){
  42. int R=0;
  43. C->_static_value_mem=(C)->_value;
  44. R=1;
  45. return R;
  46. }
  47. int rT80static_value(T80 *C){
  48. int R=0;
  49. R=(C)->_static_value_mem;
  50. return R;
  51. }
  52. T0 * rT80to_runnable(T80 *C,T0 * a1){
  53. T0 * R=NULL;
  54. /*IF*/if (!((C)->_current_type)) {
  55. C->_current_type=a1;
  56. R=(T0 *)C;
  57. }
  58. else {
  59. R=rT80clone(C,(T0 *)C);
  60. /*(IRF3*/(((T80*)R)->_current_type)=(a1);
  61. /*)*/}
  62. /*FI*/return R;
  63. }
  64. void rT80error(/*C*/T0 * a1,T0* a2){
  65. /*UT*/(T45*)oRBC27eh;
  66. rT45add_position(a1);
  67. rT45error((T45*)oRBC27eh,a2);
  68. }
  69. T0 * rT80add_comment(T80 *C,T0 * a1){
  70. T0 * R=NULL;
  71. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  72. R=(T0 *)C;
  73. }
  74. else {
  75. {T220 *n=((T220*)new(220));
  76. rT220make(n,(T0 *)C,a1);
  77. R=(T0 *)n;}}
  78. /*FI*/return R;
  79. }
  80. int ofBC80result_type=0;
  81. T0*oRBC80result_type;
  82. T0 * rT80result_type(/*C*/void){
  83. T0 * R=NULL;
  84. if (ofBC80result_type==0){
  85. ofBC80result_type=1;
  86. {T111 *n=((T111*)new(111));
  87. rT111make(n,NULL);
  88. R=(T0 *)n;}
  89. oRBC80result_type=R;}
  90. return oRBC80result_type;}
  91. T0 * rT80_px45(T80 *C){
  92. T0 * R=NULL;
  93. {T80 *n=((T80*)new(80));
  94. rT80make(n,-((C)->_value),NULL);
  95. R=(T0 *)n;}
  96. return R;
  97. }
  98. T0* rT80clone(T80 *C,T0* a1){
  99. T0* R=NULL;
  100. /*IF*/if (((int)a1)) {
  101. R=(T0 *)new(a1->id);
  102. AF_1
  103. XrT28copy(R,a1);
  104. AF_0
  105. }
  106. /*FI*/return R;
  107. }
  108. void rT80compile_to_c(T80 *C){
  109. rT40put_integer((T40*)oRBC27cpp,(C)->_value);
  110. }
  111. int rT80to_integer(T80 *C){
  112. int R=0;
  113. R=(C)->_value;
  114. return R;
  115. }
  116. T0 * rT80to_real_constant(T80 *C){
  117. T0 * R=NULL;
  118. rT80error((C)->_start_position,(T0 *)ms276);
  119. return R;
  120. }
  121. T0 * rT80written_in(T80 *C){
  122. T0 * R=NULL;
  123. T0 * _sp=NULL;
  124. _sp=(C)->_start_position;
  125. /*IF*/if (((int)_sp)) {
  126. R=((T46*)_sp)->_base_class_name;
  127. }
  128. /*FI*/return R;
  129. }
  130. void rT80copy(T80 *C,T0 * a1){
  131. /*IF*//*AF*//*AE*/
  132. memcpy(C,a1,s[C->id]);
  133. /*FI*/}
  134. int rT80is_a(T80 *C,T0 * a1){
  135. int R=0;
  136. R=XrT58is_a(rT111run_type((T111*)rT80result_type()),XrT58run_type(XrT68result_type(a1)));
  137. /*IF*/if (!(R)) {
  138. /*UT*/(T45*)oRBC27eh;
  139. rT45add_position((C)->_start_position);
  140. rT80error(XrT68start_position(a1),(T0 *)ms1261);
  141. }
  142. /*FI*/return R;
  143. }
  144. void rT80make(T80 *C,int a1,T0 * a2){
  145. C->_value=a1;
  146. C->_start_position=a2;
  147. }
  148. T0 * rT74type_boolean(/*C*/void){
  149. T0 * R=NULL;
  150. if (ofBC27type_boolean==0){
  151. ofBC27type_boolean=1;
  152. {T107 *n=((T107*)new(107));
  153. rT107make(n,NULL);
  154. R=(T0 *)n;}
  155. oRBC27type_boolean=R;}
  156. return oRBC27type_boolean;}
  157. int rT74static_value(T74 *C){
  158. int R=0;
  159. R=(C)->_static_value_mem;
  160. return R;
  161. }
  162. T0 * rT74to_runnable(T74 *C,T0 * a1){
  163. T0 * R=NULL;
  164. /*IF*/if (!((C)->_current_type)) {
  165. C->_current_type=a1;
  166. R=(T0 *)C;
  167. }
  168. else {
  169. R=rT74clone(C,(T0 *)C);
  170. /*(IRF3*/(((T74*)R)->_current_type)=(a1);
  171. /*)*/}
  172. /*FI*/return R;
  173. }
  174. void rT74error(/*C*/T0 * a1,T0* a2){
  175. /*UT*/(T45*)oRBC27eh;
  176. rT45add_position(a1);
  177. rT45error((T45*)oRBC27eh,a2);
  178. }
  179. T0 * rT74add_comment(T74 *C,T0 * a1){
  180. T0 * R=NULL;
  181. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  182. R=(T0 *)C;
  183. }
  184. else {
  185. {T220 *n=((T220*)new(220));
  186. rT220make(n,(T0 *)C,a1);
  187. R=(T0 *)n;}}
  188. /*FI*/return R;
  189. }
  190. T0* rT74clone(T74 *C,T0* a1){
  191. T0* R=NULL;
  192. /*IF*/if (((int)a1)) {
  193. R=(T0 *)new(a1->id);
  194. AF_1
  195. XrT28copy(R,a1);
  196. AF_0
  197. }
  198. /*FI*/return R;
  199. }
  200. T0 * rT74written_in(T74 *C){
  201. T0 * R=NULL;
  202. T0 * _sp=NULL;
  203. _sp=(C)->_start_position;
  204. /*IF*/if (((int)_sp)) {
  205. R=((T46*)_sp)->_base_class_name;
  206. }
  207. /*FI*/return R;
  208. }
  209. void rT74copy(T74 *C,T0 * a1){
  210. /*IF*//*AF*//*AE*/
  211. memcpy(C,a1,s[C->id]);
  212. /*FI*/}
  213. int rT74is_a(T74 *C,T0 * a1){
  214. int R=0;
  215. R=XrT58is_a(rT107run_type((T107*)/*(IRF4*/rT74type_boolean()/*)*/),XrT58run_type(XrT68result_type(a1)));
  216. /*IF*/if (!(R)) {
  217. /*UT*/(T45*)oRBC27eh;
  218. rT45add_position((C)->_start_position);
  219. rT74error(XrT68start_position(a1),(T0 *)ms1261);
  220. }
  221. /*FI*/return R;
  222. }
  223. int rT2min(T2 C,int a1){
  224. int R=0;
  225. /*IF*/if ((C)<(a1)) {
  226. R=C;
  227. }
  228. else {
  229. R=a1;
  230. }
  231. /*FI*/return R;
  232. }
  233. int rT2max(T2 C,int a1){
  234. int R=0;
  235. /*IF*/if ((a1)<(C)) {
  236. R=C;
  237. }
  238. else {
  239. R=a1;
  240. }
  241. /*FI*/return R;
  242. }
  243. T0* rT2to_string(T2 C){
  244. T0* R=NULL;
  245. {T7 *n=((T7*)new(7));
  246. rT7make(n,0);
  247. R=(T0 *)n;}
  248. rT2append_in(C,R);
  249. return R;
  250. }
  251. char rT2digit(T2 C){
  252. char R='\0';
  253. R=rT7item(ms45,(C)+(1));
  254. return R;
  255. }
  256. int rT2to_octal(T2 C){
  257. int R=0;
  258. /*IF*/if ((C)==(0)) {
  259. }
  260.  else if ((C)<(0)) {
  261. R=-(rT2to_octal(-(C)));
  262. }
  263. else {
  264. /*(IRF3*/(((T7*)(T0 *)ms832)->_count)=(0);
  265. /*)*/R=C;
  266. while (!((R)==(0))) {
  267. rT7extend((T7*)(T0 *)ms832,rT2digit((R)%(8)));
  268. R=(R)/(8);
  269. }
  270. rT7reverse((T7*)(T0 *)ms832);
  271. R=rT7to_integer((T7*)(T0 *)ms832);
  272. }
  273. /*FI*/return R;
  274. }
  275. void rT2append_in(T2 C,T0* a1){
  276. int _i=0;
  277. int _val=0;
  278. /*IF*/if ((C)==(0)) {
  279. rT7extend((T7*)a1,'0');
  280. }
  281. else {
  282. /*IF*/if ((C)<(0)) {
  283. rT7extend((T7*)a1,'\55');
  284. rT2append_in(-(C),a1);
  285. }
  286. else {
  287. _i=(((T7*)a1)->_count)+(1);
  288. _val=C;
  289. while (!((_val)==(0))) {
  290. rT7extend((T7*)a1,rT2digit((_val)%(10)));
  291. _val=(_val)/(10);
  292. }
  293. _val=((T7*)a1)->_count;
  294. while (!((_i)>=(_val))) {
  295. rT7swap((T7*)a1,_i,_val);
  296. _val=(_val)-(1);
  297. _i=(_i)+(1);
  298. }
  299. }
  300. /*FI*/}
  301. /*FI*/}
  302. float rT2to_real(T2 C){
  303. float R=0;
  304. R=C;
  305. return R;
  306. }
  307. int rT2_ix94(T2 C,int a1){
  308. int R=0;
  309. /*IF*/if ((a1)==(0)) {
  310. R=1;
  311. }
  312.  else if (((a1)%(2))==(0)) {
  313. R=rT2_ix94((C)*(C),(a1)/(2));
  314. }
  315. else {
  316. R=(C)*(rT2_ix94(C,(a1)-(1)));
  317. }
  318. /*FI*/return R;
  319. }
  320. void rT82copy(T82 *C,T0 * a1){
  321. /*IF*//*AF*//*AE*/
  322. memcpy(C,a1,s[C->id]);
  323. /*FI*/}
  324. void rT65add_index_value(T65 *C,T0 * a1){
  325. /*IF*/if (!((C)->_list)) {
  326. C->_list=ma(81,0,1,a1);
  327. }
  328. else {
  329. XrT81add_last((C)->_list,a1);
  330. }
  331. /*FI*/}
  332. void rT65copy(T65 *C,T0 * a1){
  333. /*IF*//*AF*//*AE*/
  334. memcpy(C,a1,s[C->id]);
  335. /*FI*/}
  336. T0* rT26get_environment_variable(T26 *C,T0* a1){
  337. T0* R=NULL;
  338. rT7extend((T7*)a1,'\0');
  339. R=((T0 *)getenv(((T7 *)a1)->_storage));
  340. if (R) R=((T0 *)e2s((char *)R));
  341. rT7remove_last((T7*)a1,1);
  342. return R;
  343. }
  344. void rT26automat(T26 *C){
  345. T0* _a=NULL;
  346. int _arg=0;
  347. _arg=1;
  348. while (!(((_arg)>(argument_count))||(((C)->_state)>(7)))) {
  349. _a=argument[_arg];
  350. {int iv1=(C)->_state;
  351. if (0 == iv1) goto l498;
  352. goto l499;
  353.  l498: ;
  354. /*IF*/if ((rT7item((T7*)_a,1))!=('\55')) {
  355. /*IF*/if (rT7has_suffix((T7*)_a,(T0 *)ms29)) {
  356. rT40add_c_object((T40*)oRBC27cpp,_a);
  357. }
  358.  else if (rT7has_suffix((T7*)_a,(T0 *)ms34)) {
  359. rT40add_c_object((T40*)oRBC27cpp,_a);
  360. }
  361.  else if (!((C)->_root_class)) {
  362. C->_root_class=_a;
  363. /*(IRF3*/(((T44*)oRBC27eiffel_run_control)->_root_class)=(_a);
  364. /*)*/C->_state=2;
  365. }
  366. else {
  367. rT40add_c_compiler_option((T40*)oRBC27cpp,_a);
  368. }
  369. /*FI*/}
  370.  else if (rT7is_equal(ms35,_a)) {
  371. /*IF*/if (((int)(C)->_level)) {
  372. rT26error_level(C,_a);
  373. }
  374. else {
  375. rT44set_boost((T44*)oRBC27eiffel_run_control);
  376. C->_level=_a;
  377. }
  378. /*FI*/}
  379.  else if (rT7is_equal(ms438,_a)) {
  380. /*IF*/if (((int)(C)->_level)) {
  381. rT26error_level(C,_a);
  382. }
  383. else {
  384. rT44set_no_check((T44*)oRBC27eiffel_run_control);
  385. C->_level=_a;
  386. }
  387. /*FI*/}
  388.  else if (rT7is_equal(ms439,_a)) {
  389. /*IF*/if (((int)(C)->_level)) {
  390. rT26error_level(C,_a);
  391. }
  392. else {
  393. rT44set_require_check((T44*)oRBC27eiffel_run_control);
  394. C->_level=_a;
  395. }
  396. /*FI*/}
  397.  else if (rT7is_equal(ms440,_a)) {
  398. /*IF*/if (((int)(C)->_level)) {
  399. rT26error_level(C,_a);
  400. }
  401. else {
  402. rT44set_ensure_check((T44*)oRBC27eiffel_run_control);
  403. C->_level=_a;
  404. }
  405. /*FI*/}
  406.  else if (rT7is_equal(ms441,_a)) {
  407. /*IF*/if (((int)(C)->_level)) {
  408. rT26error_level(C,_a);
  409. }
  410. else {
  411. rT44set_invariant_check((T44*)oRBC27eiffel_run_control);
  412. C->_level=_a;
  413. }
  414. /*FI*/}
  415.  else if (rT7is_equal(ms442,_a)) {
  416. /*IF*/if (((int)(C)->_level)) {
  417. rT26error_level(C,_a);
  418. }
  419. else {
  420. rT44set_loop_check((T44*)oRBC27eiffel_run_control);
  421. C->_level=_a;
  422. }
  423. /*FI*/}
  424.  else if (rT7is_equal(ms443,_a)) {
  425. /*IF*/if (((int)(C)->_level)) {
  426. rT26error_level(C,_a);
  427. }
  428. else {
  429. rT44set_all_check((T44*)oRBC27eiffel_run_control);
  430. C->_level=_a;
  431. }
  432. /*FI*/}
  433.  else if (rT7is_equal(ms444,_a)) {
  434. /*IF*/if (((int)(C)->_level)) {
  435. rT26error_level(C,_a);
  436. }
  437. else {
  438. rT44set_debug_check((T44*)oRBC27eiffel_run_control);
  439. C->_level=_a;
  440. }
  441. /*FI*/}
  442.  else if (rT7is_equal(ms445,_a)) {
  443. /*(IRF3*/(((T40*)oRBC27cpp)->_no_strip)=(1);
  444. /*)*/}
  445.  else if (rT7is_equal(ms446,_a)) {
  446. /*(IRF3*/(((T40*)oRBC27cpp)->_cc_used)=(1);
  447. /*)*/}
  448.  else if (rT7has_prefix((T7*)_a,(T0 *)ms447)) {
  449. rT40add_c_library((T40*)oRBC27cpp,_a);
  450. }
  451.  else if (rT7is_equal(ms448,_a)) {
  452. /*IF*/if (((int)(C)->_output_name)) {
  453. rT45error((T45*)oRBC27eh,(T0 *)ms449);
  454. C->_state=9;
  455. }
  456. else {
  457. C->_state=1;
  458. }
  459. /*FI*/}
  460. else {
  461. rT40add_c_compiler_option((T40*)oRBC27cpp,_a);
  462. }
  463. /*FI*/goto l497;
  464.  l499: ;
  465. if (1 == iv1) goto l500;
  466. goto l501;
  467.  l500: ;
  468. /*(IRF3*/(((T40*)oRBC27cpp)->_output_name)=(_a);
  469. /*)*/C->_state=0;
  470. goto l497;
  471.  l501: ;
  472. if (2 == iv1) goto l502;
  473. goto l503;
  474.  l502: ;
  475. C->_start_proc=_a;
  476. C->_state=0;
  477. goto l497;
  478.  l503: ;
  479.  l497: ;
  480. }
  481. _arg=(_arg)+(1);
  482. }
  483. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  484. rT52compile_to_c((T52*)oRBC27small_eiffel,(C)->_root_class,(C)->_start_proc);
  485. }
  486. /*FI*/}
  487. char rT26directory_separator(T26 *C){
  488. char R='\0';
  489. if (ofBC27directory_separator==0){
  490. ofBC27directory_separator=1;
  491. R=rT7last((T7*)rT26small_eiffel_directory(C));
  492. oRBC27directory_separator=R;}
  493. return oRBC27directory_separator;}
  494. void rT26die_with_code(T26 *C,int a1){
  495. exit(a1);
  496. }
  497. T0*oRBC27hlp_file_name;
  498. void rT26error_level(T26 *C,T0* a1){
  499. C->_state=9;
  500. /*UT*/(T45*)oRBC27eh;
  501. rT45append((T0 *)ms36);
  502. /*UT*/(T45*)oRBC27eh;
  503. rT45append((C)->_level);
  504. /*UT*/(T45*)oRBC27eh;
  505. rT45append((T0 *)ms37);
  506. /*UT*/(T45*)oRBC27eh;
  507. rT45append(a1);
  508. /*UT*/(T45*)oRBC27eh;
  509. rT45append((T0 *)ms38);
  510. rT45print_as_error((T45*)oRBC27eh);
  511. }
  512. void rT26add_directory(T26 *C,T0* a1,T0* a2){
  513. rT7append((T7*)a1,a2);
  514. rT7extend((T7*)a1,rT26directory_separator(C));
  515. }
  516. void rT26print_hlp(T26 *C,T0* a1){
  517. rT7copy((T7*)oRBC27hlp_file_name,rT26small_eiffel_directory(C));
  518. rT26add_directory(C,oRBC27hlp_file_name,(T0 *)ms21);
  519. rT7append((T7*)oRBC27hlp_file_name,a1);
  520. /*IF*/if (!(rT7has_suffix((T7*)oRBC27hlp_file_name,(T0 *)ms22))) {
  521. rT7append((T7*)oRBC27hlp_file_name,(T0 *)ms22);
  522. }
  523. /*FI*//*IF*/if (!(rT26file_exists(C,oRBC27hlp_file_name))) {
  524. rT33put_string((T33*)oRBC1std_error,(T0 *)ms24);
  525. rT33put_string((T33*)oRBC1std_error,oRBC27hlp_file_name);
  526. rT33put_string((T33*)oRBC1std_error,(T0 *)ms25);
  527. rT26die_with_code(C,1);
  528. }
  529. /*FI*/rT38append_file((T38*)oRBC1std_output,oRBC27hlp_file_name);
  530. }
  531. T0* rT26clone(T26 *C,T0* a1){
  532. T0* R=NULL;
  533. /*IF*/if (((int)a1)) {
  534. R=(T0 *)new(a1->id);
  535. AF_1
  536. XrT28copy(R,a1);
  537. AF_0
  538. }
  539. /*FI*/return R;
  540. }
  541. T0* rT26small_eiffel_directory(T26 *C){
  542. T0* R=NULL;
  543. char _slash='\0';
  544. int _i=0;
  545. if (ofBC27small_eiffel_directory==0){
  546. ofBC27small_eiffel_directory=1;
  547. R=rT26get_environment_variable(C,(T0 *)ms14);
  548. /*IF*/if (!(R)) {
  549. R=rT26clone(C,(T0 *)ms14);
  550. rT7to_upper((T7*)R);
  551. R=rT26get_environment_variable(C,R);
  552. /*IF*/if (((int)R)) {
  553. rT7to_upper((T7*)(T0 *)ms14);
  554. }
  555. /*FI*/}
  556. /*FI*//*IF*/if (!(R)) {
  557. R=(T0 *)ms20;
  558. }
  559. /*FI*/_i=((T7*)R)->_count;
  560. while (!((_i)<(0))) {
  561. _slash=rT7item((T7*)R,_i);
  562. /*IF*/if ((rT3is_letter(_slash))||(rT3is_digit(_slash))) {
  563. _i=(_i)-(1);
  564. }
  565. else {
  566. _i=-(1);
  567. }
  568. /*FI*/}
  569. /*IF*/if ((_i)==(0)) {
  570. rT7extend((T7*)R,'\57');
  571. }
  572.  else if (!((rT7last((T7*)R))==(_slash))) {
  573. rT7extend((T7*)R,_slash);
  574. }
  575. /*FI*/oRBC27small_eiffel_directory=R;}
  576. return oRBC27small_eiffel_directory;}
  577. void rT26copy(T26 *C,T0 * a1){
  578. /*IF*//*AF*//*AE*/
  579. memcpy(C,a1,s[C->id]);
  580. /*FI*/}
  581. void rT26make(T26 *C){
  582. /*IF*/if ((argument_count)<(2)) {
  583. rT33put_string((T33*)oRBC1std_error,(T0 *)ms5);
  584. rT26print_hlp(C,(T0 *)ms28);
  585. rT26die_with_code(C,1);
  586. }
  587. else {
  588. rT26automat(C);
  589. }
  590. /*FI*/}
  591. int rT26file_exists(T26 *C,T0* a1){
  592. int R=0;
  593. rT7extend((T7*)a1,'\0');
  594. {FILE *f=fopen(((T7 *)a1)->_storage,"r");
  595. R=(f != NULL);
  596. fclose(f);}
  597. rT7remove_last((T7*)a1,1);
  598. return R;
  599. }
  600. T0* rT251runnable(T251 *C,T0* a1,T0 * a2,T0 * a3){
  601. T0* R=NULL;
  602. T0 * _a=NULL;
  603. int _i=0;
  604. /*IF*/if (!(rT158empty((T158*)a1))) {
  605. R=rT251clone(C,a1);
  606. _i=1;
  607. while (!((_i)>(((T158*)R)->_upper))) {
  608. rT52push((T52*)oRBC27small_eiffel,a3);
  609. _a=rT64to_runnable((T64*)rT158item((T158*)R,_i),a2);
  610. /*IF*/if (!(_a)) {
  611. rT251error(rT64start_position((T64*)rT158item((T158*)R,_i)),(T0 *)ms477);
  612. }
  613. else {
  614. rT158put((T158*)R,_a,_i);
  615. }
  616. /*FI*/rT52pop((T52*)oRBC27small_eiffel);
  617. _i=(_i)+(1);
  618. }
  619. }
  620. /*FI*/return R;
  621. }
  622. T0 * rT251run_require(T251 *C,T0 * a1){
  623. T0 * R=NULL;
  624. T0* _ar=NULL;
  625. T0 * _er=NULL;
  626. T0* _r=NULL;
  627. int _i=0;
  628. rT268clear((T268*)oRBC62require_collector);
  629. rT50collect_for((T50*)XrT58base_class(XrT261current_type(a1)),1001,XrT261name(a1));
  630. /*IF*/if (!(rT268empty((T268*)oRBC62require_collector))) {
  631. _i=1;
  632. while (!((_i)>(((T268*)oRBC62require_collector)->_upper))) {
  633. _er=rT268item((T268*)oRBC62require_collector,_i);
  634. _r=rT251runnable(C,((T137*)_er)->_list,XrT261current_type(a1),a1);
  635. /*IF*/if (((int)_r)) {
  636. {T137 *n=((T137*)new(137));
  637. rT137from_runnable(n,_r);
  638. _er=(T0 *)n;}
  639. /*IF*/if (!(_ar)) {
  640. _ar=ma(268,0,1,_er);
  641. }
  642. else {
  643. rT268add_last((T268*)_ar,_er);
  644. }
  645. /*FI*/}
  646. /*FI*/_i=(_i)+(1);
  647. }
  648. /*IF*/if (((int)_ar)) {
  649. {T267 *n=((T267*)new(267));
  650. /*(IRF3*/((n)->_list)=(_ar);
  651. /*)*/R=(T0 *)n;}
  652. }
  653. /*FI*/}
  654. /*FI*/return R;
  655. }
  656. void rT251fatal_error(/*C*/T0* a1){
  657. rT45fatal_error((T45*)oRBC27eh,a1);
  658. }
  659. T0 * rT251first_name(T251 *C){
  660. T0 * R=NULL;
  661. R=rT128item((T128*)(C)->_names,1);
  662. return R;
  663. }
  664. T0 * rT251to_run_feature(T251 *C,T0 * a1,T0 * a2){
  665. T0 * R=NULL;
  666. {T266 *n=((T266*)new(266));
  667. rT266make(n,a1,a2,(T0 *)C);
  668. R=(T0 *)n;}
  669. return R;
  670. }
  671. void rT251error(/*C*/T0 * a1,T0* a2){
  672. /*UT*/(T45*)oRBC27eh;
  673. rT45add_position(a1);
  674. rT45error((T45*)oRBC27eh,a2);
  675. }
  676. void rT251fe_undefine(/*C*/T0 * a1,T0 * a2){
  677. /*UT*/(T45*)oRBC27eh;
  678. rT45append((T0 *)ms483);
  679. /*UT*/(T45*)oRBC27eh;
  680. rT45append(XrT67to_string(a1));
  681. /*UT*/(T45*)oRBC27eh;
  682. rT45append((T0 *)ms484);
  683. /*UT*/(T45*)oRBC27eh;
  684. rT45append(((T48*)((T50*)a2)->_base_class_name)->_to_string);
  685. rT251fatal_error((T0 *)ms485);
  686. }
  687. int rT251is_merge_with(T251 *C,T0 * a1,T0 * a2){
  688. int R=0;
  689. int _ne=0;
  690. _ne=/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/;
  691. /*IF*/if (((T0 *)(C)->_result_type)!=((T0 *)XrT62result_type(a1))) {
  692. /*IF*/if ((!((C)->_result_type))||(!(XrT62result_type(a1)))) {
  693. /*UT*/(T45*)oRBC27eh;
  694. rT45add_position(XrT62start_position(a1));
  695. rT251error(rT251start_position(C),(T0 *)ms488);
  696. }
  697. /*FI*/}
  698. /*FI*//*IF*/if (((T0 *)(C)->_arguments)!=((T0 *)XrT62arguments(a1))) {
  699. /*IF*/if ((!((C)->_arguments))||(!(XrT62arguments(a1)))) {
  700. /*UT*/(T45*)oRBC27eh;
  701. rT45add_position(XrT62start_position(a1));
  702. rT251error(rT251start_position(C),(T0 *)ms489);
  703. }
  704.  else if ((rT92count((T92*)(C)->_arguments))!=(rT92count((T92*)XrT62arguments(a1)))) {
  705. /*UT*/(T45*)oRBC27eh;
  706. rT45add_position(XrT62start_position(a1));
  707. rT251error(rT251start_position(C),(T0 *)ms490);
  708. }
  709. /*FI*/}
  710. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_ne))==(0)) {
  711. /*IF*/if (((int)(C)->_result_type)) {
  712. /*IF*/if (!(XrT58is_a_in((C)->_result_type,XrT62result_type(a1),a2))) {
  713. rT45error((T45*)oRBC27eh,(T0 *)ms491);
  714. }
  715. /*FI*/}
  716. /*FI*/}
  717. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_ne))==(0)) {
  718. /*IF*/if (((int)(C)->_arguments)) {
  719. /*IF*/if (!(rT92is_a_in((T92*)(C)->_arguments,XrT62arguments(a1),a2))) {
  720. /*UT*/(T45*)oRBC27eh;
  721. rT45add_position(XrT62start_position(a1));
  722. rT251error(rT251start_position(C),(T0 *)ms494);
  723. }
  724. /*FI*/}
  725. /*FI*/}
  726. /*FI*/R=((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_ne))==(0);
  727. return R;
  728. }
  729. T0 * rT251start_position(T251 *C){
  730. T0 * R=NULL;
  731. R=XrT67start_position(rT251first_name(C));
  732. return R;
  733. }
  734. void rT251collect_for(T251 *C,int a1){
  735. /*IF*/if ((a1)==(1001)) {
  736. /*IF*/if (((int)(C)->_require_assertion)) {
  737. /*IF*/if (!(rT268fast_has((T268*)oRBC62require_collector,(C)->_require_assertion))) {
  738. rT268add_last((T268*)oRBC62require_collector,(C)->_require_assertion);
  739. }
  740. /*FI*/}
  741. /*FI*/}
  742. else {
  743. /*IF*/if (((int)(C)->_ensure_assertion)) {
  744. rT157add_into((T157*)(C)->_ensure_assertion,oRBC62assertion_collector);
  745. }
  746. /*FI*/}
  747. /*FI*/}
  748. void rT251add_into(T251 *C,T0 * a1){
  749. T0 * _fn=NULL;
  750. int _i=0;
  751. C->_base_class=rT46base_class((T46*)XrT67start_position(rT128item((T128*)(C)->_names,1)));
  752. _i=1;
  753. while (!((_i)>(rT128count((T128*)(C)->_names)))) {
  754. _fn=rT128item((T128*)(C)->_names,_i);
  755. /*IF*/if (rT61has((T61*)a1,XrT67to_key(_fn))) {
  756. _fn=XrT62first_name(rT61at((T61*)a1,XrT67to_key(_fn)));
  757. /*UT*/(T45*)oRBC27eh;
  758. rT45add_position(XrT67start_position(_fn));
  759. /*UT*/(T45*)oRBC27eh;
  760. rT45add_position(XrT67start_position(rT128item((T128*)(C)->_names,_i)));
  761. rT45error((T45*)oRBC27eh,(T0 *)ms419);
  762. /*UT*/(T45*)oRBC27eh;
  763. rT45append(XrT67to_string(_fn));
  764. rT45error((T45*)oRBC27eh,(T0 *)ms38);
  765. }
  766. else {
  767. rT61put((T61*)a1,(T0 *)C,XrT67to_key(_fn));
  768. }
  769. /*FI*/_i=(_i)+(1);
  770. }
  771. }
  772. T0* rT251clone(T251 *C,T0* a1){
  773. T0* R=NULL;
  774. /*IF*/if (((int)a1)) {
  775. R=(T0 *)new(a1->id);
  776. AF_1
  777. XrT28copy(R,a1);
  778. AF_0
  779. }
  780. /*FI*/return R;
  781. }
  782. T0 * rT251try_to_undefine(T251 *C,T0 * a1,T0 * a2){
  783. T0 * R=NULL;
  784. /*IF*/if (XrT67is_frozen(a1)) {
  785. /*UT*/(T45*)oRBC27eh;
  786. rT45add_position(rT251start_position(C));
  787. rT251error(XrT67start_position(a1),(T0 *)ms482);
  788. rT251fe_undefine(a1,a2);
  789. }
  790. else {
  791. R=rT251try_to_undefine_aux(C,a1,a2);
  792. /*IF*/if (((int)R)) {
  793. XrT203set_clients(R,(C)->_clients);
  794. }
  795. else {
  796. rT251fe_undefine(a1,a2);
  797. }
  798. /*FI*/}
  799. /*FI*/return R;
  800. }
  801. T0 * rT251try_to_undefine_aux(T251 *C,T0 * a1,T0 * a2){
  802. T0 * R=NULL;
  803. {T204 *n=((T204*)new(204));
  804. rT204from_effective(n,a1,(C)->_arguments,(C)->_require_assertion,(C)->_ensure_assertion,a2);
  805. R=(T0 *)n;}return R;
  806. }
  807. void rT251set_header_comment(T251 *C,T0 * a1){
  808. /*IF*/if ((((int)a1))&&((rT59count((T59*)a1))>(1))) {
  809. C->_end_comment=a1;
  810. }
  811. /*FI*/}
  812. int rT251can_hide(T251 *C,T0 * a1,T0 * a2){
  813. int R=0;
  814. int _ne=0;
  815. _ne=/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/;
  816. /*IF*/if (((T0 *)(C)->_result_type)!=((T0 *)XrT62result_type(a1))) {
  817. /*IF*/if ((!((C)->_result_type))||(!(XrT62result_type(a1)))) {
  818. /*UT*/(T45*)oRBC27eh;
  819. rT45add_position(XrT62start_position(a1));
  820. rT251error(rT251start_position(C),(T0 *)ms501);
  821. }
  822. /*FI*/}
  823. /*FI*//*IF*/if (((T0 *)(C)->_arguments)!=((T0 *)XrT62arguments(a1))) {
  824. /*IF*/if ((!((C)->_arguments))||(!(XrT62arguments(a1)))) {
  825. /*UT*/(T45*)oRBC27eh;
  826. rT45add_position(XrT62start_position(a1));
  827. rT251error(rT251start_position(C),(T0 *)ms502);
  828. }
  829.  else if ((rT92count((T92*)(C)->_arguments))!=(rT92count((T92*)XrT62arguments(a1)))) {
  830. /*UT*/(T45*)oRBC27eh;
  831. rT45add_position(XrT62start_position(a1));
  832. rT251error(rT251start_position(C),(T0 *)ms503);
  833. }
  834. /*FI*/}
  835. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_ne))==(0)) {
  836. /*IF*/if (((int)(C)->_result_type)) {
  837. /*IF*/if (!(XrT58is_a_in((C)->_result_type,XrT62result_type(a1),a2))) {
  838. /*UT*/(T45*)oRBC27eh;
  839. rT45append((T0 *)ms504);
  840. /*UT*/(T45*)oRBC27eh;
  841. rT45append(XrT58run_time_mark(((T260*)a2)->_current_type));
  842. rT45error((T45*)oRBC27eh,(T0 *)ms505);
  843. }
  844. /*FI*/}
  845. /*FI*/}
  846. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_ne))==(0)) {
  847. /*IF*/if (((int)(C)->_arguments)) {
  848. /*IF*/if (!(rT92is_a_in((T92*)(C)->_arguments,XrT62arguments(a1),a2))) {
  849. /*UT*/(T45*)oRBC27eh;
  850. rT45add_position(XrT62start_position(a1));
  851. /*UT*/(T45*)oRBC27eh;
  852. rT45add_position(rT251start_position(C));
  853. /*UT*/(T45*)oRBC27eh;
  854. rT45append((T0 *)ms506);
  855. /*UT*/(T45*)oRBC27eh;
  856. rT45append(XrT58run_time_mark(((T260*)a2)->_current_type));
  857. rT45error((T45*)oRBC27eh,(T0 *)ms507);
  858. }
  859. /*FI*/}
  860. /*FI*/}
  861. /*FI*/R=((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)-(_ne))==(0);
  862. return R;
  863. }
  864. T0 * rT251run_ensure(T251 *C,T0 * a1){
  865. T0 * R=NULL;
  866. T0* _r=NULL;
  867. rT158clear((T158*)oRBC62assertion_collector);
  868. rT50collect_for((T50*)XrT58base_class(XrT261current_type(a1)),1002,XrT261name(a1));
  869. _r=rT251runnable(C,oRBC62assertion_collector,XrT261current_type(a1),a1);
  870. /*IF*/if (((int)_r)) {
  871. {T157 *n=((T157*)new(157));
  872. rT157from_runnable(n,_r);
  873. R=(T0 *)n;}
  874. }
  875. /*FI*/return R;
  876. }
  877. T0 * rT251base_class_name(T251 *C){
  878. T0 * R=NULL;
  879. R=((T50*)(C)->_base_class)->_base_class_name;
  880. return R;
  881. }
  882. void rT251copy(T251 *C,T0 * a1){
  883. /*IF*//*AF*//*AE*/
  884. memcpy(C,a1,s[C->id]);
  885. /*FI*/}
  886. void rT251set_rescue_compound(T251 *C,T0 * a1){
  887. /*IF*/if ((((int)a1))&&(/*(IRF4*/0/*)*/)) {
  888. rT251error(rT251start_position(C),(T0 *)ms402);
  889. }
  890. /*FI*/C->_rescue_compound=a1;
  891. }
  892. void rT251make_e_feature(T251 *C,T0 * a1,T0 * a2){
  893. C->_names=a1;
  894. C->_result_type=a2;
  895. }
  896. void rT251make_routine(T251 *C,T0 * a1,T0 * a2,T0 * a3,T0 * a4,T0 * a5){
  897. rT251make_e_feature(C,a1,NULL);
  898. C->_header_comment=a4;
  899. C->_arguments=a2;
  900. C->_obsolete_mark=a3;
  901. C->_require_assertion=a5;
  902. }
  903. void rT251make(T251 *C,T0 * a1,T0 * a2,T0 * a3,T0 * a4,T0 * a5,T0 * a6,T0 * a7){
  904. rT251make_routine(C,a1,a2,a3,a4,a5);
  905. C->_local_vars=a6;
  906. C->_routine_body=a7;
  907. C->_use_current_state=1015;
  908. }
  909. T0* rT52find_path_for(T52 *C,T0* a1){
  910. T0* R=NULL;
  911. int _i=0;
  912. rT7copy((T7*)(T0 *)ms50,a1);
  913. rT7to_lower((T7*)(T0 *)ms50);
  914. /*IF*/if (!(rT7has_suffix((T7*)(T0 *)ms50,(T0 *)ms51))) {
  915. rT7append((T7*)(T0 *)ms50,(T0 *)ms51);
  916. }
  917. /*FI*//*IF*/if (rT52file_exists(C,(T0 *)ms50)) {
  918. R=rT52clone(C,(T0 *)ms50);
  919. }
  920. else {
  921. _i=((T41*)rT52loading_path(C))->_lower;
  922. while (!(((_i)>(((T41*)rT52loading_path(C))->_upper))||(((int)R)))) {
  923. rT7copy((T7*)(T0 *)ms58,rT41item((T41*)rT52loading_path(C),_i));
  924. rT7append((T7*)(T0 *)ms58,(T0 *)ms50);
  925. /*IF*/if (rT52file_exists(C,(T0 *)ms58)) {
  926. R=rT52clone(C,(T0 *)ms58);
  927. }
  928. /*FI*/_i=(_i)+(1);
  929. }
  930. }
  931. /*FI*//*IF*/if ((!(R))&&(rT57has((T57*)rT52rename_dictionary(C),(T0 *)ms50))) {
  932. rT7copy((T7*)(T0 *)ms58,rT57at((T57*)rT52rename_dictionary(C),(T0 *)ms50));
  933. /*IF*/if (rT52file_exists(C,(T0 *)ms58)) {
  934. R=(T0 *)ms58;
  935. }
  936. else {
  937. rT33put_string((T33*)oRBC1std_error,(T0 *)ms66);
  938. rT33put_string((T33*)oRBC1std_error,(T0 *)ms58);
  939. rT33put_string((T33*)oRBC1std_error,(T0 *)ms67);
  940. rT52die_with_code(C,1);
  941. }
  942. /*FI*/}
  943. /*FI*//*IF*/if (!(R)) {
  944. rT33put_string((T33*)oRBC1std_error,(T0 *)ms68);
  945. rT33put_string((T33*)oRBC1std_error,a1);
  946. rT33put_string((T33*)oRBC1std_error,(T0 *)ms69);
  947. /*(IRF3*/(((T7*)(T0 *)ms58)->_count)=(0);
  948. /*)*/rT52append_loading_path_in(C,(T0 *)ms58);
  949. rT33put_string((T33*)oRBC1std_error,(T0 *)ms58);
  950. }
  951. /*FI*/return R;
  952. }
  953. void rT52push(T52 *C,T0 * a1){
  954. C->_top=((C)->_top)+(1);
  955. XrT265force(oRBC52stack_rf,a1,(C)->_top);
  956. }
  957. void rT52cecil_for(/*C*/T0 * a1,T0* a2){
  958. T0 * _rf=NULL;
  959. _rf=rT260get_feature_with((T260*)XrT58run_class(a1),a2);
  960. rT40add_cecil((T40*)oRBC27cpp,_rf);
  961. }
  962. T0 * rT52get_class(/*C*/T0* a1){
  963. T0 * R=NULL;
  964. /*IF*/if (rT54has((T54*)oRBC52base_class_dictionary,a1)) {
  965. R=rT54at((T54*)oRBC52base_class_dictionary,a1);
  966. }
  967. else {
  968. rT48make((T48*)rT52tmp_class_name(),a1,NULL);
  969. R=rT48base_class((T48*)rT52tmp_class_name());
  970. }
  971. /*FI*/return R;
  972. }
  973. T0* rT52get_environment_variable(T52 *C,T0* a1){
  974. T0* R=NULL;
  975. rT7extend((T7*)a1,'\0');
  976. R=((T0 *)getenv(((T7 *)a1)->_storage));
  977. if (R) R=((T0 *)e2s((char *)R));
  978. rT7remove_last((T7*)a1,1);
  979. return R;
  980. }
  981. void rT52define_extern_tables(T52 *C){
  982. int _size=0;
  983. _size=((C)->_last_id)+(1);
  984. rT40put_extern4((T40*)oRBC27cpp,(T0 *)ms1049,(T0 *)ms1050,_size);
  985. rT40put_extern4((T40*)oRBC27cpp,(T0 *)ms1051,(T0 *)ms1052,_size);
  986. rT40put_extern4((T40*)oRBC27cpp,(T0 *)ms1053,(T0 *)ms1054,_size);
  987. rT40put_extern4((T40*)oRBC27cpp,(T0 *)ms1055,(T0 *)ms1056,_size);
  988. }
  989. char rT52directory_separator(T52 *C){
  990. char R='\0';
  991. if (ofBC27directory_separator==0){
  992. ofBC27directory_separator=1;
  993. R=rT7last((T7*)rT52small_eiffel_directory(C));
  994. oRBC27directory_separator=R;}
  995. return oRBC27directory_separator;}
  996. void rT52fatal_error(/*C*/T0* a1){
  997. rT45fatal_error((T45*)oRBC27eh,a1);
  998. }
  999. void rT52die_with_code(T52 *C,int a1){
  1000. exit(a1);
  1001. }
  1002. int ofBC52loading_path=0;
  1003. T0*oRBC52loading_path;
  1004. T0* rT52loading_path(T52 *C){
  1005. T0* R=NULL;
  1006. T0 * _file=NULL;
  1007. T0* _defaults=NULL;
  1008. char _slash='\0';
  1009. int _i=0;
  1010. T0* _path=NULL;
  1011. if (ofBC52loading_path==0){
  1012. ofBC52loading_path=1;
  1013. _path=(T0 *)ms52;
  1014. {T41 *n=((T41*)new(41));
  1015. rT41make(n,1,10);
  1016. R=(T0 *)n;}
  1017. rT41clear((T41*)R);
  1018. _slash=rT52directory_separator(C);
  1019. /*IF*/if (rT52file_exists(C,_path)) {
  1020. {T39 *n=((T39*)new(39));
  1021. /*(IRF3*/((n)->_mode)=((T0 *)ms26);
  1022. /*)*/_file=(T0 *)n;}
  1023. rT52open_read(C,_file,_path);
  1024. while (!(rT39end_of_input((T39*)_file))) {
  1025. rT39read_line((T39*)_file);
  1026. _path=rT52clone(C,oRBC39last_string);
  1027. /*IF*/if (!(rT7empty((T7*)_path))) {
  1028. /*IF*/if ((rT7last((T7*)_path))!=(_slash)) {
  1029. rT7extend((T7*)_path,_slash);
  1030. }
  1031. /*FI*/rT41add_last((T41*)R,_path);
  1032. }
  1033. /*FI*/}
  1034. rT39disconnect((T39*)_file);
  1035. }
  1036. /*FI*/_defaults=ma(41,0,3,ms55,ms56,ms57);
  1037. _i=1;
  1038. while (!((_i)>(((T41*)_defaults)->_upper))) {
  1039. _path=rT41item((T41*)_defaults,_i);
  1040. rT7prepend((T7*)_path,rT52small_eiffel_directory(C));
  1041. rT7extend((T7*)_path,_slash);
  1042. rT41add_last((T41*)R,_path);
  1043. _i=(_i)+(1);
  1044. }
  1045. oRBC52loading_path=R;}
  1046. return oRBC52loading_path;}
  1047. void rT52incr_magic_count(T52 *C){
  1048. C->_magic_count=((C)->_magic_count)+(1);
  1049. }
  1050. void rT52pop(T52 *C){
  1051. C->_top=((C)->_top)-(1);
  1052. }
  1053. T0* rT52clone(T52 *C,T0* a1){
  1054. T0* R=NULL;
  1055. /*IF*/if (((int)a1)) {
  1056. R=(T0 *)new(a1->id);
  1057. AF_1
  1058. XrT28copy(R,a1);
  1059. AF_0
  1060. }
  1061. /*FI*/return R;
  1062. }
  1063. void rT52open_read(T52 *C,T0 * a1,T0* a2){
  1064. rT39connect_to((T39*)a1,a2);
  1065. /*IF*/if (!(rT39is_connected((T39*)a1))) {
  1066. rT33put_string((T33*)oRBC1std_error,(T0 *)ms53);
  1067. rT33put_string((T33*)oRBC1std_error,a2);
  1068. rT33put_string((T33*)oRBC1std_error,(T0 *)ms54);
  1069. rT52die_with_code(C,1);
  1070. }
  1071. /*FI*/}
  1072. T0 * rT52get_started(T52 *C,T0* a1,T0* a2){
  1073. T0 * R=NULL;
  1074. int _magic=0;
  1075. T0 * _root_type=NULL;
  1076. T0 * _root_proc=NULL;
  1077. T0 * _root=NULL;
  1078. T0 * _root_proc_name=NULL;
  1079. T0 * _root_name=NULL;
  1080. _root=rT52load_class(C,a1);
  1081. /*IF*/if (!(_root)) {
  1082. /*UT*/(T45*)oRBC27eh;
  1083. rT45append((T0 *)ms454);
  1084. /*UT*/(T45*)oRBC27eh;
  1085. rT45append(a1);
  1086. rT45error((T45*)oRBC27eh,(T0 *)ms38);
  1087. }
  1088. else {
  1089. _root_name=((T50*)_root)->_base_class_name;
  1090. {T67 *n=((T67*)new(67));
  1091. rT67make(n,a2,NULL);
  1092. _root_proc_name=(T0 *)n;}
  1093. _root_proc=rT50root_procedure((T50*)_root,a2);
  1094. }
  1095. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1096. /*IF*/if (((int)((T251*)_root_proc)->_arguments)) {
  1097. /*UT*/(T45*)oRBC27eh;
  1098. rT45add_position(rT251start_position((T251*)_root_proc));
  1099. /*UT*/(T45*)oRBC27eh;
  1100. rT45append((T0 *)ms512);
  1101. /*UT*/(T45*)oRBC27eh;
  1102. rT45append(a2);
  1103. rT45error((T45*)oRBC27eh,(T0 *)ms513);
  1104. }
  1105. /*FI*/}
  1106. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1107. _root_type=((T260*)rT50run_class((T50*)_root))->_current_type;
  1108. }
  1109. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1110. R=rT251to_run_feature((T251*)_root_proc,_root_type,_root_proc_name);
  1111. }
  1112. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1113. /*IF*/if (rT44no_check((T44*)oRBC27eiffel_run_control)) {
  1114. rT52cecil_for(rT52type_any(),(T0 *)ms520);
  1115. }
  1116. /*FI*/}
  1117. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1118. /*IF*/if (!(/*(IRF4*/(/*UT*/(T45*)oRBC27eh,
  1119. (rT7empty((T7*)oRBC45explanation))&&(rT47empty((T47*)rT45positions()))/*)*/))) {
  1120. rT38put_string((T38*)oRBC1std_output,(T0 *)ms521);
  1121. rT45print_as_warning((T45*)oRBC27eh);
  1122. }
  1123. /*FI*/rT38put_string((T38*)oRBC1std_output,(T0 *)ms522);
  1124. rT38put_integer((T38*)oRBC1std_output,(C)->_magic_count);
  1125. rT38put_string((T38*)oRBC1std_output,(T0 *)ms523);
  1126. while (!(((_magic)==((C)->_magic_count))||((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)>(0)))) {
  1127. _magic=(C)->_magic_count;
  1128. /*(IRF3*/{
  1129. int _i=0;
  1130. T0 * _rc=NULL;
  1131. _i=1;
  1132. while (!((_i)>(((T262*)oRBC52run_class_dictionary)->_count))) {
  1133. _rc=rT262item((T262*)oRBC52run_class_dictionary,_i);
  1134. rT260falling_down((T260*)_rc);
  1135. _i=(_i)+(1);
  1136. }
  1137. }
  1138. /*)*/}
  1139. }
  1140. /*FI*/rT38put_string((T38*)oRBC1std_output,(T0 *)ms524);
  1141. rT38put_integer((T38*)oRBC1std_output,(C)->_magic_count);
  1142. rT38put_string((T38*)oRBC1std_output,(T0 *)ms525);
  1143. return R;
  1144. }
  1145. int ofBC52rename_dictionary=0;
  1146. T0*oRBC52rename_dictionary;
  1147. T0 * rT52rename_dictionary(T52 *C){
  1148. T0 * R=NULL;
  1149. T0* _short_name=NULL;
  1150. T0* _full_name=NULL;
  1151. int _i=0;
  1152. if (ofBC52rename_dictionary==0){
  1153. ofBC52rename_dictionary=1;
  1154. {T57 *n=((T57*)new(57));
  1155. rT57make(n);
  1156. R=(T0 *)n;}
  1157. _i=1;
  1158. while (!((_i)>(((T41*)rT52loading_path(C))->_upper))) {
  1159. rT7copy((T7*)(T0 *)ms58,rT41item((T41*)rT52loading_path(C),_i));
  1160. rT7append((T7*)(T0 *)ms58,(T0 *)ms59);
  1161. /*IF*/if (rT52file_exists(C,(T0 *)ms58)) {
  1162. rT52open_read(C,rT52tmp_file_read(),(T0 *)ms58);
  1163. while (!(rT39end_of_input((T39*)rT52tmp_file_read()))) {
  1164. rT39read_word((T39*)rT52tmp_file_read());
  1165. _full_name=rT52clone(C,oRBC39last_string);
  1166. rT39read_word((T39*)rT52tmp_file_read());
  1167. _short_name=rT52clone(C,oRBC39last_string);
  1168. rT7prepend((T7*)_short_name,rT41item((T41*)rT52loading_path(C),_i));
  1169. /*IF*/if (rT57has((T57*)R,_full_name)) {
  1170. rT33put_string((T33*)oRBC1std_error,(T0 *)ms60);
  1171. rT33put_string((T33*)oRBC1std_error,_full_name);
  1172. rT33put_string((T33*)oRBC1std_error,(T0 *)ms61);
  1173. rT33put_string((T33*)oRBC1std_error,_short_name);
  1174. rT33put_string((T33*)oRBC1std_error,(T0 *)ms62);
  1175. rT33put_string((T33*)oRBC1std_error,rT57at((T57*)R,_full_name));
  1176. rT33put_string((T33*)oRBC1std_error,(T0 *)ms63);
  1177. rT52die_with_code(C,1);
  1178. }
  1179. /*FI*/rT57put((T57*)R,_short_name,_full_name);
  1180. rT39skip_separators((T39*)rT52tmp_file_read());
  1181. }
  1182. rT39disconnect((T39*)rT52tmp_file_read());
  1183. }
  1184. /*FI*/_i=(_i)+(1);
  1185. }
  1186. oRBC52rename_dictionary=R;}
  1187. return oRBC52rename_dictionary;}
  1188. int ofBC52tmp_class_name=0;
  1189. T0*oRBC52tmp_class_name;
  1190. T0 * rT52tmp_class_name(/*C*/void){
  1191. T0 * R=NULL;
  1192. if (ofBC52tmp_class_name==0){
  1193. ofBC52tmp_class_name=1;
  1194. {T48 *n=((T48*)new(48));
  1195. rT48make(n,(T0 *)ms183,NULL);
  1196. R=(T0 *)n;}
  1197. oRBC52tmp_class_name=R;}
  1198. return oRBC52tmp_class_name;}
  1199. void rT52append_loading_path_in(T52 *C,T0* a1){
  1200. T0* _sed=NULL;
  1201. int _i=0;
  1202. rT7append((T7*)a1,(T0 *)ms70);
  1203. _i=((T41*)rT52loading_path(C))->_lower;
  1204. while (!((_i)>(((T41*)rT52loading_path(C))->_upper))) {
  1205. rT7extend((T7*)a1,'\42');
  1206. rT7append((T7*)a1,rT41item((T41*)rT52loading_path(C),_i));
  1207. rT7extend((T7*)a1,'\42');
  1208. rT7extend((T7*)a1,'\12');
  1209. _i=(_i)+(1);
  1210. }
  1211. rT7append((T7*)a1,(T0 *)ms71);
  1212. rT7append((T7*)a1,(T0 *)ms14);
  1213. _sed=rT52get_environment_variable(C,(T0 *)ms14);
  1214. rT7append((T7*)a1,(T0 *)ms72);
  1215. /*IF*/if (!(_sed)) {
  1216. rT7append((T7*)a1,(T0 *)ms73);
  1217. }
  1218. else {
  1219. rT7append((T7*)a1,(T0 *)ms74);
  1220. rT7append((T7*)a1,_sed);
  1221. rT7append((T7*)a1,(T0 *)ms75);
  1222. }
  1223. /*FI*/rT7extend((T7*)a1,'\12');
  1224. }
  1225. T0 * rT52tmp_file_read(/*C*/void){
  1226. T0 * R=NULL;
  1227. if (ofBC27tmp_file_read==0){
  1228. ofBC27tmp_file_read=1;
  1229. {T39 *n=((T39*)new(39));
  1230. /*(IRF3*/((n)->_mode)=((T0 *)ms26);
  1231. /*)*/R=(T0 *)n;}
  1232. oRBC27tmp_file_read=R;}
  1233. return oRBC27tmp_file_read;}
  1234. T0*oRBC52stack_rf;
  1235. T0*oRBC52run_class_dictionary;
  1236. T0 * rT52run_class(/*C*/T0 * a1){
  1237. T0 * R=NULL;
  1238. T0* _run_string=NULL;
  1239. _run_string=XrT58run_time_mark(a1);
  1240. /*IF*/if (rT262has((T262*)oRBC52run_class_dictionary,_run_string)) {
  1241. R=rT262at((T262*)oRBC52run_class_dictionary,_run_string);
  1242. }
  1243. else {
  1244. {T260 *n=((T260*)new(260));
  1245. rT260make(n,a1);
  1246. R=(T0 *)n;}
  1247. }
  1248. /*FI*/return R;
  1249. }
  1250. void rT52compile_to_c(T52 *C,T0* a1,T0* a2){
  1251. int _i=0;
  1252. T0 * _rf=NULL;
  1253. int _run_count=0;
  1254. T0 * _t=NULL;
  1255. T0 * _rc=NULL;
  1256. C->_is_compiling_flag=1;
  1257. rT38put_string((T38*)oRBC1std_output,(T0 *)ms450);
  1258. rT38put_string((T38*)oRBC1std_output,(T0 *)ms451);
  1259. _rf=rT52get_started(C,a1,a2);
  1260. /*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  1261. rT38put_string((T38*)oRBC1std_output,(T0 *)ms526);
  1262. rT38put_integer((T38*)oRBC1std_output,((T54*)oRBC52base_class_dictionary)->_count);
  1263. rT38put_character((T38*)oRBC1std_output,'\12');
  1264. rT40get_started((T40*)oRBC27cpp);
  1265. rT40swap_on_h((T40*)oRBC27cpp);
  1266. rT38put_string((T38*)oRBC1std_output,(T0 *)ms754);
  1267. _i=1;
  1268. while (!((_i)>(((T262*)oRBC52run_class_dictionary)->_count))) {
  1269. _rc=rT262item((T262*)oRBC52run_class_dictionary,_i);
  1270. _t=((T260*)_rc)->_current_type;
  1271. /*IF*/if (((T260*)_rc)->_at_run_time) {
  1272. _run_count=(_run_count)+(1);
  1273. XrT58c_typedef(_t);
  1274. }
  1275. /*FI*/rT38put_integer((T38*)oRBC1std_output,((T260*)_rc)->_id);
  1276. rT38put_character((T38*)oRBC1std_output,'\11');
  1277. rT38put_string((T38*)oRBC1std_output,XrT58run_time_mark(((T260*)_rc)->_current_type));
  1278. rT38put_character((T38*)oRBC1std_output,'\12');
  1279. _i=(_i)+(1);
  1280. }
  1281. rT38put_string((T38*)oRBC1std_output,(T0 *)ms758);
  1282. rT38put_integer((T38*)oRBC1std_output,((T262*)oRBC52run_class_dictionary)->_count);
  1283. rT38put_string((T38*)oRBC1std_output,(T0 *)ms759);
  1284. rT38put_string((T38*)oRBC1std_output,(T0 *)ms760);
  1285. rT38put_integer((T38*)oRBC1std_output,_run_count);
  1286. rT38put_string((T38*)oRBC1std_output,(T0 *)ms761);
  1287. _i=1;
  1288. while (!((_i)>(((T262*)oRBC52run_class_dictionary)->_count))) {
  1289. _rc=rT262item((T262*)oRBC52run_class_dictionary,_i);
  1290. _t=((T260*)_rc)->_current_type;
  1291. /*IF*/if (((T260*)_rc)->_at_run_time) {
  1292. rT38put_integer((T38*)oRBC1std_output,((T260*)_rc)->_id);
  1293. rT38put_character((T38*)oRBC1std_output,'\11');
  1294. rT38put_string((T38*)oRBC1std_output,XrT58run_time_mark(_t));
  1295. rT38put_character((T38*)oRBC1std_output,'\12');
  1296. XrT58c_struct(((T260*)_rc)->_current_type);
  1297. }
  1298. /*FI*/_i=(_i)+(1);
  1299. }
  1300. rT40swap_on_c((T40*)oRBC27cpp);
  1301. rT38put_string((T38*)oRBC1std_output,(T0 *)ms767);
  1302. _i=1;
  1303. while (!((_i)>(((T262*)oRBC52run_class_dictionary)->_count))) {
  1304. rT260compile_to_c((T260*)rT262item((T262*)oRBC52run_class_dictionary,_i));
  1305. _i=(_i)+(1);
  1306. }
  1307. rT40cecil_define((T40*)oRBC27cpp);
  1308. rT40define_main((T40*)oRBC27cpp,_rf);
  1309. rT40define_used_basics((T40*)oRBC27cpp);
  1310. rT40write_make_file((T40*)oRBC27cpp);
  1311. }
  1312. else {
  1313. rT45error((T45*)oRBC27eh,(T0 *)ms1108);
  1314. }
  1315. /*FI*/C->_is_compiling_flag=0;
  1316. }
  1317. T0* rT52small_eiffel_directory(T52 *C){
  1318. T0* R=NULL;
  1319. char _slash='\0';
  1320. int _i=0;
  1321. if (ofBC27small_eiffel_directory==0){
  1322. ofBC27small_eiffel_directory=1;
  1323. R=rT52get_environment_variable(C,(T0 *)ms14);
  1324. /*IF*/if (!(R)) {
  1325. R=rT52clone(C,(T0 *)ms14);
  1326. rT7to_upper((T7*)R);
  1327. R=rT52get_environment_variable(C,R);
  1328. /*IF*/if (((int)R)) {
  1329. rT7to_upper((T7*)(T0 *)ms14);
  1330. }
  1331. /*FI*/}
  1332. /*FI*//*IF*/if (!(R)) {
  1333. R=(T0 *)ms20;
  1334. }
  1335. /*FI*/_i=((T7*)R)->_count;
  1336. while (!((_i)<(0))) {
  1337. _slash=rT7item((T7*)R,_i);
  1338. /*IF*/if ((rT3is_letter(_slash))||(rT3is_digit(_slash))) {
  1339. _i=(_i)-(1);
  1340. }
  1341. else {
  1342. _i=-(1);
  1343. }
  1344. /*FI*/}
  1345. /*IF*/if ((_i)==(0)) {
  1346. rT7extend((T7*)R,'\57');
  1347. }
  1348.  else if (!((rT7last((T7*)R))==(_slash))) {
  1349. rT7extend((T7*)R,_slash);
  1350. }
  1351. /*FI*/oRBC27small_eiffel_directory=R;}
  1352. return oRBC27small_eiffel_directory;}
  1353. int rT52next_unique(T52 *C){
  1354. int R=0;
  1355. /*IF*/if (((C)->_last_unique)<(1000)) {
  1356. C->_last_unique=1000;
  1357. }
  1358. /*FI*/C->_last_unique=((C)->_last_unique)+(1);
  1359. R=(C)->_last_unique;
  1360. return R;
  1361. }
  1362. int rT52next_id(T52 *C){
  1363. int R=0;
  1364. /*IF*/if (((C)->_last_id)==(0)) {
  1365. C->_last_id=25;
  1366. }
  1367. /*FI*/C->_last_id=((C)->_last_id)+(1);
  1368. R=(C)->_last_id;
  1369. return R;
  1370. }
  1371. T0 * rT52type_any(/*C*/void){
  1372. T0 * R=NULL;
  1373. if (ofBC27type_any==0){
  1374. ofBC27type_any=1;
  1375. {T87 *n=((T87*)new(87));
  1376. rT87make(n,NULL);
  1377. R=(T0 *)n;}
  1378. oRBC27type_any=R;}
  1379. return oRBC27type_any;}
  1380. int rT52is_used(/*C*/T0* a1){
  1381. int R=0;
  1382. R=rT54has((T54*)oRBC52base_class_dictionary,a1);
  1383. return R;
  1384. }
  1385. T0 * rT52top_rf(T52 *C){
  1386. T0 * R=NULL;
  1387. R=XrT265item(oRBC52stack_rf,(C)->_top);
  1388. return R;
  1389. }
  1390. void rT52add_class(T52 *C,T0 * a1){
  1391. rT54put((T54*)oRBC52base_class_dictionary,a1,((T48*)((T50*)a1)->_base_class_name)->_to_string);
  1392. rT52incr_magic_count(C);
  1393. }
  1394. T0*oRBC52base_class_dictionary;
  1395. T0 * rT52base_class(T52 *C,T0 * a1){
  1396. T0 * R=NULL;
  1397. T0* _path=NULL;
  1398. /*IF*/if (rT54has((T54*)oRBC52base_class_dictionary,((T48*)a1)->_to_string)) {
  1399. R=rT54at((T54*)oRBC52base_class_dictionary,((T48*)a1)->_to_string);
  1400. }
  1401.  else if (/*(IRF4*/((T51*)oRBC27eiffel_parser)->_is_running/*)*/) {
  1402. rT52fatal_error((T0 *)ms49);
  1403. }
  1404. else {
  1405. _path=rT52find_path_for(C,((T48*)a1)->_to_string);
  1406. /*IF*/if (((int)_path)) {
  1407. R=rT51analyse_class((T51*)oRBC27eiffel_parser,_path);
  1408. }
  1409. /*FI*//*IF*/if (!(R)) {
  1410. /*UT*/(T45*)oRBC27eh;
  1411. rT45add_position(((T48*)a1)->_start_position);
  1412. rT52fatal_error((T0 *)ms425);
  1413. }
  1414.  else if (!(rT54has((T54*)oRBC52base_class_dictionary,((T48*)a1)->_to_string))) {
  1415. /*UT*/(T45*)oRBC27eh;
  1416. rT45append((T0 *)ms426);
  1417. /*UT*/(T45*)oRBC27eh;
  1418. rT45append(_path);
  1419. /*UT*/(T45*)oRBC27eh;
  1420. rT45append((T0 *)ms427);
  1421. /*UT*/(T45*)oRBC27eh;
  1422. rT45append(((T48*)a1)->_to_string);
  1423. rT52fatal_error((T0 *)ms428);
  1424. }
  1425. /*FI*/}
  1426. /*FI*/return R;
  1427. }
  1428. void rT52copy(T52 *C,T0 * a1){
  1429. /*IF*//*AF*//*AE*/
  1430. memcpy(C,a1,s[C->id]);
  1431. /*FI*/}
  1432. int rT52file_exists(T52 *C,T0* a1){
  1433. int R=0;
  1434. rT7extend((T7*)a1,'\0');
  1435. {FILE *f=fopen(((T7 *)a1)->_storage,"r");
  1436. R=(f != NULL);
  1437. fclose(f);}
  1438. rT7remove_last((T7*)a1,1);
  1439. return R;
  1440. }
  1441. T0 * rT52load_class(T52 *C,T0* a1){
  1442. T0 * R=NULL;
  1443. T0* _path=NULL;
  1444. _path=rT52find_path_for(C,a1);
  1445. /*IF*/if (!(_path)) {
  1446. rT52fatal_error((T0 *)ms452);
  1447. }
  1448. else {
  1449. R=rT51analyse_class((T51*)oRBC27eiffel_parser,_path);
  1450. /*IF*/if (!(R)) {
  1451. rT52fatal_error((T0 *)ms453);
  1452. }
  1453. /*FI*/}
  1454. /*FI*/return R;
  1455. }
  1456. T0 * rT50name_of(T50 *C,T0 * a1,T0 * a2){
  1457. T0 * R=NULL;
  1458. /*IF*/if (((T0 *)C)==((T0 *)a1)) {
  1459. R=a2;
  1460. }
  1461.  else if (!((C)->_parent_list)) {
  1462. R=rT50name_of((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1,a2);
  1463. }
  1464. else {
  1465. R=rT131name_of((T131*)(C)->_parent_list,a1,a2);
  1466. }
  1467. /*FI*/return R;
  1468. }
  1469. int rT50has_feature(T50 *C,T0* a1){
  1470. int R=0;
  1471. XrT67make(rT50mem_fn(),a1,NULL);
  1472. R=rT50has(C,rT50mem_fn());
  1473. return R;
  1474. }
  1475. int ofBC50mem_fn=0;
  1476. T0*oRBC50mem_fn;
  1477. T0 * rT50mem_fn(/*C*/void){
  1478. T0 * R=NULL;
  1479. if (ofBC50mem_fn==0){
  1480. ofBC50mem_fn=1;
  1481. {T67 *n=((T67*)new(67));
  1482. rT67make(n,(T0 *)ms473,NULL);
  1483. R=(T0 *)n;}
  1484. oRBC50mem_fn=R;}
  1485. return oRBC50mem_fn;}
  1486. int rT50already_defined(T50 *C,T0 * a1){
  1487. int R=0;
  1488. /*IF*/if (((int)(C)->_already_defined_list)) {
  1489. R=rT41has((T41*)(C)->_already_defined_list,XrT67to_key(a1));
  1490. }
  1491. /*FI*/return R;
  1492. }
  1493. int rT50is_general(T50 *C){
  1494. int R=0;
  1495. R=((T0 *)(T0 *)ms184)==((T0 *)((T48*)(C)->_base_class_name)->_to_string);
  1496. return R;
  1497. }
  1498. int rT50is_generic(T50 *C){
  1499. int R=0;
  1500. R=((int)(C)->_formal_generic_list);
  1501. return R;
  1502. }
  1503. void rT50fatal_error(/*C*/T0* a1){
  1504. rT45fatal_error((T45*)oRBC27eh,a1);
  1505. }
  1506. T0 * rT50clients_for(T50 *C,T0 * a1,T0 * a2){
  1507. T0 * R=NULL;
  1508. /*IF*/if (((T0 *)XrT62base_class(a2))==((T0 *)C)) {
  1509. R=XrT62clients(a2);
  1510. }
  1511.  else if (!((C)->_parent_list)) {
  1512. R=rT50clients_for((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1,a2);
  1513. }
  1514. else {
  1515. R=rT131clients_for((T131*)(C)->_parent_list,a1,a2);
  1516. }
  1517. /*FI*/return R;
  1518. }
  1519. void rT50set_already_defined(T50 *C,T0 * a1){
  1520. /*IF*/if (!((C)->_already_defined_list)) {
  1521. {T41 *n=((T41*)new(41));
  1522. rT41make(n,1,5);
  1523. C->_already_defined_list=(T0 *)n;}
  1524. rT41clear((T41*)(C)->_already_defined_list);
  1525. }
  1526. /*FI*/rT41add_last((T41*)(C)->_already_defined_list,XrT67to_key(a1));
  1527. }
  1528. int rT50has_redefine(T50 *C,T0 * a1){
  1529. int R=0;
  1530. /*IF*/if ((((int)(C)->_parent_list))||((rT131count((T131*)(C)->_parent_list))==(0))) {
  1531. R=rT131has_redefine((T131*)(C)->_parent_list,a1);
  1532. }
  1533. /*FI*/return R;
  1534. }
  1535. void rT50collect_invariant(T50 *C,T0 * a1){
  1536. /*IF*/if (((int)(C)->_parent_list)) {
  1537. rT131collect_invariant((T131*)(C)->_parent_list,a1);
  1538. }
  1539. /*FI*//*IF*/if (((int)(C)->_invariant_assertion)) {
  1540. rT260collect_invariant((C)->_invariant_assertion);
  1541. }
  1542. /*FI*/}
  1543. void rT50collect_for(T50 *C,int a1,T0 * a2){
  1544. T0* _fn_key=NULL;
  1545. _fn_key=XrT67to_key(a2);
  1546. /*IF*/if (rT61has((T61*)(C)->_feature_dictionary,_fn_key)) {
  1547. XrT62collect_for(rT61at((T61*)(C)->_feature_dictionary,_fn_key),a1);
  1548. }
  1549. /*FI*//*IF*/if ((!((C)->_parent_list))||((rT131count((T131*)(C)->_parent_list))==(0))) {
  1550. /*IF*/if (rT50is_general(C)) {
  1551. }
  1552. else {
  1553. rT50collect_for((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1,a2);
  1554. }
  1555. /*FI*/}
  1556. else {
  1557. rT131collect_for((T131*)(C)->_parent_list,a1,a2);
  1558. }
  1559. /*FI*/}
  1560. int ofBC50mem_rpn=0;
  1561. T0*oRBC50mem_rpn;
  1562. T0 * rT50mem_rpn(/*C*/void){
  1563. T0 * R=NULL;
  1564. if (ofBC50mem_rpn==0){
  1565. ofBC50mem_rpn=1;
  1566. {T67 *n=((T67*)new(67));
  1567. rT67make(n,(T0 *)ms457,NULL);
  1568. R=(T0 *)n;}
  1569. oRBC50mem_rpn=R;}
  1570. return oRBC50mem_rpn;}
  1571. void rT50get_started(T50 *C){
  1572. T0* _s1=NULL;
  1573. C->_id=rT48frozen_id((T48*)(C)->_base_class_name);
  1574. /*IF*/if (((C)->_id)==(0)) {
  1575. C->_id=rT52next_id((T52*)oRBC27small_eiffel);
  1576. }
  1577. /*FI*//*IF*/if (((int)(C)->_feature_clause_list)) {
  1578. rT257get_started((T257*)(C)->_feature_clause_list,(C)->_feature_dictionary);
  1579. }
  1580. /*FI*//*IF*/if (((int)(C)->_parent_list)) {
  1581. rT131get_started((T131*)(C)->_parent_list);
  1582. }
  1583. /*FI*/}
  1584. void rT50set_is_deferred(T50 *C){
  1585. /*IF*/if ((C)->_is_expanded) {
  1586. rT50error1(C);
  1587. }
  1588. /*FI*/C->_is_deferred=1;
  1589. }
  1590. void rT50set_is_expanded(T50 *C){
  1591. /*IF*/if ((C)->_is_deferred) {
  1592. rT50error1(C);
  1593. }
  1594. /*FI*/C->_is_expanded=1;
  1595. }
  1596. void rT50set_invariant(T50 *C,T0 * a1,T0 * a2,T0* a3){
  1597. /*IF*/if ((((int)a2))||(((int)a3))) {
  1598. {T259 *n=((T259*)new(259));
  1599. rT259make(n,a1,a2,a3);
  1600. C->_invariant_assertion=(T0 *)n;}
  1601. }
  1602. /*FI*/}
  1603. T0 * rT50look_up_for(T50 *C,T0 * a1,T0 * a2){
  1604. T0 * R=NULL;
  1605. int _i=0;
  1606. T0 * _super_fn=NULL;
  1607. T0 * _fnl=NULL;
  1608. T0 * _cst_att=NULL;
  1609. T0* _fn_key=NULL;
  1610. T0 * _super=NULL;
  1611. _fn_key=XrT67to_key(a2);
  1612. /*IF*/if (rT61has((T61*)(C)->_feature_dictionary,_fn_key)) {
  1613. R=rT61at((T61*)(C)->_feature_dictionary,_fn_key);
  1614. _super=rT50super_look_up_for(C,a1,a2);
  1615. /*IF*/if (((int)_super)) {
  1616. _cst_att=_super;
  1617. if ((int)_cst_att) switch (((T0 *)_cst_att)->id) {
  1618. case 152: case 150: case 149: case 148: case 144: case 153: case 154: case 155: 
  1619. break;
  1620. default:
  1621. _cst_att = NULL;
  1622. };/*IF*/if (((int)_cst_att)) {
  1623. /*UT*/(T45*)oRBC27eh;
  1624. rT45add_position(XrT62start_position(_super));
  1625. /*UT*/(T45*)oRBC27eh;
  1626. rT45add_position(XrT62start_position(R));
  1627. rT50fatal_error((T0 *)ms499);
  1628. }
  1629. /*FI*/_fnl=XrT62names(_super);
  1630. _i=rT128count((T128*)_fnl);
  1631. while (!((_i)<(1))) {
  1632. _super_fn=rT128item((T128*)_fnl,_i);
  1633. /*IF*/if (XrT67is_frozen(_super_fn)) {
  1634. /*IF*/if (rT7is_equal((T7*)XrT67to_key(_super_fn),_fn_key)) {
  1635. /*UT*/(T45*)oRBC27eh;
  1636. rT45add_position(XrT67start_position(_super_fn));
  1637. /*UT*/(T45*)oRBC27eh;
  1638. rT45add_position(XrT62start_position(R));
  1639. rT50fatal_error((T0 *)ms500);
  1640. }
  1641. /*FI*/}
  1642. /*FI*/_i=(_i)-(1);
  1643. }
  1644. /*IF*/if (!(XrT62can_hide(R,_super,a1))) {
  1645. /*UT*/(T45*)oRBC27eh;
  1646. rT45add_position(XrT62start_position(_super));
  1647. /*UT*/(T45*)oRBC27eh;
  1648. rT45add_position(XrT62start_position(R));
  1649. /*UT*/(T45*)oRBC27eh;
  1650. rT45append((T0 *)ms508);
  1651. rT45print_as_warning((T45*)oRBC27eh);
  1652. }
  1653. /*FI*//*IF*/if (XrT62is_deferred(_super)) {
  1654. }
  1655.  else if (rT50has_redefine(C,a2)) {
  1656. }
  1657. else {
  1658. /*UT*/(T45*)oRBC27eh;
  1659. rT45add_position(XrT62start_position(R));
  1660. /*UT*/(T45*)oRBC27eh;
  1661. rT45add_position(XrT62start_position(_super));
  1662. /*UT*/(T45*)oRBC27eh;
  1663. rT45append((T0 *)ms509);
  1664. /*UT*/(T45*)oRBC27eh;
  1665. rT45append(((T48*)(C)->_base_class_name)->_to_string);
  1666. /*UT*/(T45*)oRBC27eh;
  1667. rT45append((T0 *)ms510);
  1668. rT45print_as_error((T45*)oRBC27eh);
  1669. }
  1670. /*FI*/}
  1671. /*FI*/}
  1672. else {
  1673. R=rT50super_look_up_for(C,a1,a2);
  1674. }
  1675. /*FI*/return R;
  1676. }
  1677. T0 * rT50parent(T50 *C,T0 * a1){
  1678. T0 * R=NULL;
  1679. /*IF*/if (!((C)->_parent_list)) {
  1680. rT50error(NULL,(T0 *)ms1439);
  1681. }
  1682. else {
  1683. R=rT131parent_for((T131*)(C)->_parent_list,a1);
  1684. }
  1685. /*FI*/return R;
  1686. }
  1687. T0 * rT50class_with(/*C*/T0* a1){
  1688. T0 * R=NULL;
  1689. R=(/*UT*/(T52*)oRBC27small_eiffel,
  1690. rT52get_class(a1));
  1691. return R;
  1692. }
  1693. T0 * rT50run_class(T50 *C){
  1694. T0 * R=NULL;
  1695. T0 * _type=NULL;
  1696. T0* _name=NULL;
  1697. T0 * _rcd=NULL;
  1698. _name=((T48*)(C)->_base_class_name)->_to_string;
  1699. /*IF*/if ((!((C)->_is_deferred))&&(!(rT50is_generic(C)))) {
  1700. _rcd=oRBC52run_class_dictionary;
  1701. /*IF*/if (rT262has((T262*)_rcd,_name)) {
  1702. R=rT262at((T262*)_rcd,_name);
  1703. }
  1704. else {
  1705. {T116 *n=((T116*)new(116));
  1706. /*(IRF3*/((n)->_base_class_name)=((C)->_base_class_name);
  1707. /*)*/_type=(T0 *)n;}
  1708. R=rT116run_class((T116*)_type);
  1709. }
  1710. /*FI*/}
  1711. else {
  1712. rT50error(NULL,(T0 *)ms480);
  1713. }
  1714. /*FI*/return R;
  1715. }
  1716. void rT50mapping_c(T50 *C){
  1717. rT40put_character((T40*)oRBC27cpp,'B');
  1718. rT40put_character((T40*)oRBC27cpp,'C');
  1719. rT40put_integer((T40*)oRBC27cpp,(C)->_id);
  1720. }
  1721. void rT50set_parent_list(T50 *C,T0 * a1,T0 * a2,T0* a3){
  1722. {T131 *n=((T131*)new(131));
  1723. rT131make(n,(T0 *)C,a1,a2,a3);
  1724. C->_parent_list=(T0 *)n;}
  1725. }
  1726. T0 * rT50expanded_initializer(T50 *C,T0 * a1){
  1727. T0 * R=NULL;
  1728. /*IF*/if (((int)(C)->_creation_clause_list)) {
  1729. R=rT133expanded_initializer((T133*)(C)->_creation_clause_list,a1);
  1730. }
  1731. /*FI*/return R;
  1732. }
  1733. void rT50make(T50 *C,T0* a1){
  1734. C->_path=a1;
  1735. {T48 *n=((T48*)new(48));
  1736. rT48make_unknown(n);
  1737. C->_base_class_name=(T0 *)n;}
  1738. {T61 *n=((T61*)new(61));
  1739. rT61make(n);
  1740. C->_feature_dictionary=(T0 *)n;}
  1741. }
  1742. T0 * rT50root_procedure(T50 *C,T0* a1){
  1743. T0 * R=NULL;
  1744. T0 * _f=NULL;
  1745. T0 * _rc=NULL;
  1746. /*IF*/if (rT50is_generic(C)) {
  1747. /*UT*/(T45*)oRBC27eh;
  1748. rT45append(((T48*)(C)->_base_class_name)->_to_string);
  1749. /*UT*/(T45*)oRBC27eh;
  1750. rT45append((T0 *)ms455);
  1751. rT45print_as_fatal_error((T45*)oRBC27eh);
  1752. }
  1753. /*FI*//*IF*/if ((C)->_is_deferred) {
  1754. /*UT*/(T45*)oRBC27eh;
  1755. rT45append(((T48*)(C)->_base_class_name)->_to_string);
  1756. /*UT*/(T45*)oRBC27eh;
  1757. rT45append((T0 *)ms456);
  1758. rT45print_as_fatal_error((T45*)oRBC27eh);
  1759. }
  1760. /*FI*/XrT67make(rT50mem_rpn(),a1,((T48*)(C)->_base_class_name)->_start_position);
  1761. /*IF*/if (!(rT50has_creation(C,rT50mem_rpn()))) {
  1762. /*UT*/(T45*)oRBC27eh;
  1763. rT45append(((T48*)(C)->_base_class_name)->_to_string);
  1764. /*UT*/(T45*)oRBC27eh;
  1765. rT45extend('\57');
  1766. /*UT*/(T45*)oRBC27eh;
  1767. rT45append(a1);
  1768. /*UT*/(T45*)oRBC27eh;
  1769. rT45append((T0 *)ms472);
  1770. rT45print_as_fatal_error((T45*)oRBC27eh);
  1771. }
  1772. /*FI*//*IF*/if (!(rT50has_feature(C,a1))) {
  1773. /*UT*/(T45*)oRBC27eh;
  1774. rT45append(((T48*)(C)->_base_class_name)->_to_string);
  1775. /*UT*/(T45*)oRBC27eh;
  1776. rT45append((T0 *)ms474);
  1777. /*UT*/(T45*)oRBC27eh;
  1778. rT45append(a1);
  1779. /*UT*/(T45*)oRBC27eh;
  1780. rT45append((T0 *)ms475);
  1781. rT45print_as_fatal_error((T45*)oRBC27eh);
  1782. }
  1783. /*FI*/_rc=rT50run_class(C);
  1784. rT260set_at_run_time((T260*)_rc);
  1785. _f=rT50look_up_for(C,_rc,rT50mem_rpn());
  1786. R=_f;
  1787. if ((int)R) switch (((T0 *)R)->id) {
  1788. case 251: 
  1789. break;
  1790. default:
  1791. R = NULL;
  1792. };/*IF*/if (!(R)) {
  1793. /*UT*/(T45*)oRBC27eh;
  1794. rT45add_position(XrT62start_position(_f));
  1795. rT50fatal_error((T0 *)ms511);
  1796. }
  1797. /*FI*/return R;
  1798. }
  1799. int rT50is_subclass_of(T50 *C,T0 * a1){
  1800. int R=0;
  1801. /*IF*/if ((((int)(C)->_isom))&&(rT56fast_has((T56*)(C)->_isom,a1))) {
  1802. R=1;
  1803. }
  1804. else {
  1805. /*IF*/if (((T0 *)(T0 *)ms183)==((T0 *)((T48*)((T50*)a1)->_base_class_name)->_to_string)) {
  1806. R=1;
  1807. }
  1808.  else if (rT50is_general(C)) {
  1809. R=0;
  1810. }
  1811.  else if ((!((C)->_parent_list))||((rT131count((T131*)(C)->_parent_list))==(0))) {
  1812. rT56clear((T56*)oRBC50visited);
  1813. rT56add_last((T56*)oRBC50visited,(T0 *)C);
  1814. R=rT50is_subclass_of_aux((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1);
  1815. }
  1816. else {
  1817. rT56clear((T56*)oRBC50visited);
  1818. rT56add_last((T56*)oRBC50visited,(T0 *)C);
  1819. R=rT131has_parent((T131*)(C)->_parent_list,a1);
  1820. }
  1821. /*FI*//*IF*/if (R) {
  1822. /*IF*/if (!((C)->_isom)) {
  1823. C->_isom=ma(56,0,1,a1);
  1824. }
  1825. else {
  1826. rT56add_last((T56*)(C)->_isom,a1);
  1827. }
  1828. /*FI*/}
  1829. /*FI*/}
  1830. /*FI*/return R;
  1831. }
  1832. int rT50is_subclass_of_aux(T50 *C,T0 * a1){
  1833. int R=0;
  1834. /*IF*/if (!(rT56fast_has((T56*)oRBC50visited,(T0 *)C))) {
  1835. rT56add_last((T56*)oRBC50visited,(T0 *)C);
  1836. }
  1837. /*FI*//*IF*/if ((!((C)->_parent_list))||((rT131count((T131*)(C)->_parent_list))==(0))) {
  1838. R=rT50is_subclass_of_aux((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1);
  1839. }
  1840. else {
  1841. R=rT131has_parent((T131*)(C)->_parent_list,a1);
  1842. }
  1843. /*FI*/return R;
  1844. }
  1845. int rT50proper_has(T50 *C,T0 * a1){
  1846. int R=0;
  1847. R=rT61has((T61*)(C)->_feature_dictionary,XrT67to_key(a1));
  1848. return R;
  1849. }
  1850. void rT50error1(T50 *C){
  1851. rT50error(((T48*)(C)->_base_class_name)->_start_position,(T0 *)ms178);
  1852. }
  1853. void rT50error(/*C*/T0 * a1,T0* a2){
  1854. /*UT*/(T45*)oRBC27eh;
  1855. rT45add_position(a1);
  1856. rT45error((T45*)oRBC27eh,a2);
  1857. }
  1858. void rT50add_creation_clause(T50 *C,T0 * a1){
  1859. /*IF*/if (!((C)->_creation_clause_list)) {
  1860. {T133 *n=((T133*)new(133));
  1861. /*(IRF3*/((n)->_list)=(ma(134,0,1,a1));
  1862. /*)*/C->_creation_clause_list=(T0 *)n;}
  1863. }
  1864. else {
  1865. rT133add_last((T133*)(C)->_creation_clause_list,a1);
  1866. }
  1867. /*FI*/}
  1868. void rT50add_feature_clause(T50 *C,T0 * a1){
  1869. /*IF*/if (!((C)->_feature_clause_list)) {
  1870. {T257 *n=((T257*)new(257));
  1871. /*(IRF3*/((n)->_list)=(ma(258,0,1,a1));
  1872. /*)*/C->_feature_clause_list=(T0 *)n;}
  1873. }
  1874. else {
  1875. rT257add_last((T257*)(C)->_feature_clause_list,a1);
  1876. }
  1877. /*FI*/}
  1878. int rT50super_has(T50 *C,T0 * a1){
  1879. int R=0;
  1880. /*IF*/if ((!((C)->_parent_list))||((rT131count((T131*)(C)->_parent_list))==(0))) {
  1881. /*IF*/if (rT50is_general(C)) {
  1882. R=0;
  1883. }
  1884. else {
  1885. R=rT50has((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1);
  1886. }
  1887. /*FI*/}
  1888. else {
  1889. R=rT131has((T131*)(C)->_parent_list,a1);
  1890. }
  1891. /*FI*/return R;
  1892. }
  1893. T0*oRBC50visited;
  1894. T0 * rT50super_look_up_for(T50 *C,T0 * a1,T0 * a2){
  1895. T0 * R=NULL;
  1896. /*IF*/if ((!((C)->_parent_list))||((rT131count((T131*)(C)->_parent_list))==(0))) {
  1897. /*IF*/if (rT50is_general(C)) {
  1898. R=NULL;
  1899. }
  1900. else {
  1901. R=rT50look_up_for((T50*)/*(IRF4*/rT50class_with((T0 *)ms183)/*)*/,a1,a2);
  1902. }
  1903. /*FI*/}
  1904. else {
  1905. R=rT131look_up_for((T131*)(C)->_parent_list,a1,a2);
  1906. }
  1907. /*FI*/return R;
  1908. }
  1909. void rT50add_index_clause(T50 *C,T0 * a1){
  1910. /*IF*/if (!((C)->_index_list)) {
  1911. {T82 *n=((T82*)new(82));
  1912. /*(IRF3*/((n)->_list)=(ma(83,0,1,a1));
  1913. /*)*/C->_index_list=(T0 *)n;}
  1914. }
  1915. else {
  1916. rT83add_last((T83*)((T82*)(C)->_index_list)->_list,a1);
  1917. }
  1918. /*FI*/}
  1919. void rT50copy(T50 *C,T0 * a1){
  1920. /*IF*//*AF*//*AE*/
  1921. memcpy(C,a1,s[C->id]);
  1922. /*FI*/}
  1923. int rT50has(T50 *C,T0 * a1){
  1924. int R=0;
  1925. /*IF*/if (rT61has((T61*)(C)->_feature_dictionary,XrT67to_key(a1))) {
  1926. R=1;
  1927. }
  1928. else {
  1929. R=rT50super_has(C,a1);
  1930. }
  1931. /*FI*/return R;
  1932. }
  1933. void rT50check_expanded_with(T50 *C,T0 * a1){
  1934. /*IF*/if ((C)->_is_deferred) {
  1935. /*UT*/(T45*)oRBC27eh;
  1936. rT45add_type(a1,(T0 *)ms1421);
  1937. rT50fatal_error((T0 *)ms1422);
  1938. }
  1939. /*FI*//*IF*/if (((int)(C)->_creation_clause_list)) {
  1940. rT133check_expanded_with((T133*)(C)->_creation_clause_list,a1);
  1941. }
  1942. /*FI*/}
  1943. int rT50has_creation_clause(T50 *C){
  1944. int R=0;
  1945. R=((int)(C)->_creation_clause_list);
  1946. return R;
  1947. }
  1948. int rT50has_creation(T50 *C,T0 * a1){
  1949. int R=0;
  1950. T0 * _cc=NULL;
  1951. /*IF*/if (!((C)->_creation_clause_list)) {
  1952. /*UT*/(T45*)oRBC27eh;
  1953. rT45append(rT48to_err_msg2((T48*)(C)->_base_class_name));
  1954. /*UT*/(T45*)oRBC27eh;
  1955. rT45append((T0 *)ms461);
  1956. /*UT*/(T45*)oRBC27eh;
  1957. rT45add_position(XrT67start_position(a1));
  1958. rT45print_as_error((T45*)oRBC27eh);
  1959. }
  1960. else {
  1961. _cc=rT133get_clause((T133*)(C)->_creation_clause_list,a1);
  1962. /*IF*/if (!(_cc)) {
  1963. /*UT*/(T45*)oRBC27eh;
  1964. rT45append(XrT67to_err_msg2(a1));
  1965. /*UT*/(T45*)oRBC27eh;
  1966. rT45append((T0 *)ms467);
  1967. /*UT*/(T45*)oRBC27eh;
  1968. rT45append(rT48to_err_msg2((T48*)(C)->_base_class_name));
  1969. rT50error(XrT67start_position(a1),(T0 *)ms38);
  1970. }
  1971. else {
  1972. R=rT123gives_permission_to((T123*)((T132*)_cc)->_clients,XrT67written_in(a1));
  1973. }
  1974. /*FI*/}
  1975. /*FI*//*IF*/if (!(R)) {
  1976. rT50error(XrT67start_position(a1),(T0 *)ms471);
  1977. }
  1978. /*FI*/return R;
  1979. }
  1980. int rT202is_static(T202 *C){
  1981. int R=0;
  1982. /*IF*/if (XrT58is_boolean(XrT68result_type((C)->_target))) {
  1983. /*IF*/if ((XrT68is_static((C)->_target))&&(XrT68is_static(rT202arg1(C)))) {
  1984. R=1;
  1985. /*IF*/if ((XrT68static_value((C)->_target))==(1)) {
  1986. C->_static_value_mem=XrT68static_value(rT202arg1(C));
  1987. }
  1988. else {
  1989. C->_static_value_mem=1;
  1990. }
  1991. /*FI*/}
  1992. /*FI*/}
  1993. /*FI*/return R;
  1994. }
  1995. int rT202static_value(T202 *C){
  1996. int R=0;
  1997. R=(C)->_static_value_mem;
  1998. return R;
  1999. }
  2000. void rT202fatal_error(/*C*/T0* a1){
  2001. rT45fatal_error((T45*)oRBC27eh,a1);
  2002. }
  2003. void rT202to_runnable_0(T202 *C,T0 * a1){
  2004. T0 * _rc=NULL;
  2005. T0 * _t=NULL;
  2006. C->_current_type=a1;
  2007. _t=XrT68to_runnable((C)->_target,a1);
  2008. /*IF*/if (!(_t)) {
  2009. rT202error(XrT68start_position((C)->_target),(T0 *)ms1119);
  2010. }
  2011. else {
  2012. C->_target=_t;
  2013. _rc=XrT58run_class(XrT68result_type((C)->_target));
  2014. C->_run_feature=rT260get_rf((T260*)_rc,(C)->_target,(C)->_feature_name);
  2015. C->_result_type=XrT261result_type((C)->_run_feature);
  2016. /*IF*/if (!((C)->_result_type)) {
  2017. /*UT*/(T45*)oRBC27eh;
  2018. rT45add_position(XrT261start_position((C)->_run_feature));
  2019. rT202error(((T70*)(C)->_feature_name)->_start_position,(T0 *)ms1131);
  2020. }
  2021. /*FI*/}
  2022. /*FI*/}
  2023. T0 * rT202to_runnable(T202 *C,T0 * a1){
  2024. T0 * R=NULL;
  2025. T0 * _a=NULL;
  2026. /*IF*/if (!((C)->_current_type)) {
  2027. rT202to_runnable_0(C,a1);
  2028. _a=rT170to_runnable((T170*)(C)->_arguments,a1);
  2029. /*IF*/if (!(_a)) {
  2030. rT202error(XrT68start_position(rT202arg1(C)),(T0 *)ms1136);
  2031. }
  2032. else {
  2033. C->_arguments=_a;
  2034. }
  2035. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  2036. rT170match_with((T170*)(C)->_arguments,(C)->_run_feature);
  2037. }
  2038. /*FI*//*IF*/if (((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0))&&(XrT58is_like_argument((C)->_result_type))) {
  2039. C->_result_type=XrT58run_type(XrT68result_type(rT202arg1(C)));
  2040. }
  2041. /*FI*//*IF*/if ((/*(IRF4*/((T45*)oRBC27eh)->_nb_errors/*)*/)==(0)) {
  2042. R=(T0 *)C;
  2043. }
  2044. /*FI*/}
  2045. else {
  2046. R=rT202clone(C,(T0 *)C);
  2047. /*(IRF3*/(((T202*)R)->_current_type)=(NULL);
  2048. /*)*/R=rT202to_runnable((T202*)R,a1);
  2049. }
  2050. /*FI*/return R;
  2051. }
  2052. void rT202error(/*C*/T0 * a1,T0* a2){
  2053. /*UT*/(T45*)oRBC27eh;
  2054. rT45add_position(a1);
  2055. rT45error((T45*)oRBC27eh,a2);
  2056. }
  2057. T0 * rT202add_comment(T202 *C,T0 * a1){
  2058. T0 * R=NULL;
  2059. /*IF*/if ((!(a1))||((rT59count((T59*)a1))==(0))) {
  2060. R=(T0 *)C;
  2061. }
  2062. else {
  2063. {T220 *n=((T220*)new(220));
  2064. rT220make(n,(T0 *)C,a1);
  2065. R=(T0 *)n;}}
  2066. /*FI*/return R;
  2067. }
  2068. T0 * rT202arg1(T202 *C){
  2069. T0 * R=NULL;
  2070. R=rT170first((T170*)(C)->_arguments);
  2071. return R;
  2072. }
  2073. T0 * rT202start_position(T202 *C){
  2074. T0 * R=NULL;
  2075. R=((T70*)(C)->_feature_name)->_start_position;
  2076. return R;
  2077. }
  2078. int rT202use_current(T202 *C){
  2079. int R=0;
  2080. /*IF*/{/*AT*/R=rT170use_current((T170*)(C)->_arguments);
  2081. }
  2082. /*FI*//*IF*/if (R) {
  2083. }
  2084.  else if (XrT68is_current((C)->_target)) {
  2085. R=XrT261use_current((C)->_run_feature);
  2086. }
  2087. else {
  2088. R=XrT68use_current((C)->_target);
  2089. }
  2090. /*FI*/return R;
  2091. }
  2092. T0* rT202clone(T202 *C,T0* a1){
  2093. T0* R=NULL;
  2094. /*IF*/if (((int)a1)) {
  2095. R=(T0 *)new(a1->id);
  2096. AF_1
  2097. XrT28copy(R,a1);
  2098. AF_0
  2099. }
  2100. /*FI*/return R;
  2101. }
  2102. void rT202compile_to_c_old(T202 *C){
  2103. XrT68compile_to_c_old((C)->_target);
  2104. /*IF*/{/*AT*/rT170compile_to_c_old((T170*)(C)->_arguments);
  2105. }
  2106. /*FI*/}
  2107. void rT202compile_to_c(T202 *C){
  2108. T0* _n=NULL;
  2109. T0 * _dyn_rf=NULL;
  2110. T0 * _tt=NULL;
  2111. T0* _r=NULL;
  2112. _tt=XrT58run_type(XrT68result_type((C)->_target));
  2113. _n=XrT67to_string(XrT261name((C)->_run_feature));
  2114. /*IF*/if (rT7is_equal((T7*)(T0 *)ms1109,_n)) {
  2115. rT40put_is_expanded_type((T40*)oRBC27cpp,_tt);
  2116. }
  2117.  else if (((XrT58is_expanded(_tt))||(XrT68is_current((C)->_target)))||(XrT68is_manifest_string((C)->_target))) {
  2118. rT40push_direct((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  2119. XrT261mapping_c((C)->_run_feature);
  2120. rT40pop((T40*)oRBC27cpp);
  2121. }
  2122. else {
  2123. _r=((T260*)XrT58run_class(_tt))->_running;
  2124. /*IF*/if (!(_r)) {
  2125. rT40push_void((T40*)oRBC27cpp,(C)->_run_feature,(C)->_target,(C)->_arguments);
  2126. XrT261mapping_c((C)->_run_feature);
  2127. rT40pop((T40*)oRBC27cpp);
  2128. }
  2129.  else if ((rT263count((T263*)_r))==(1)) {
  2130. _dyn_rf=rT202dynamic(rT263first((T263*)_r),(C)->_run_feature);
  2131. rT40push_check((T40*)oRBC27cpp,_dyn_rf,(C)->_target,(C)->_arguments);
  2132. XrT261mapping_c(_dyn_rf);
  2133. rT40pop((T40*)oRBC27cpp);
  2134. }
  2135. else {
  2136. rT40use_switch((T40*)oRBC27cpp,(C)->_run_feature,_r,(C)->_target,(C)->_arguments);
  2137. }
  2138. /*FI*/}
  2139. /*FI*/}
  2140. int rT202to_integer(T202 *C){
  2141. int R=0;
  2142. rT202error(rT202start_position(C),(T0 *)ms175);
  2143. return R;
  2144. }
  2145.